home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / zbpc_460.zip / UTILITY.EXE / SCIFN.APP < prev    next >
Text File  |  1987-12-07  |  3KB  |  56 lines

  1. REM *****************************************************
  2. REM ****  ZBasic 3.0 Scientific Functions  09/25/85  ****
  3. REM **** Accuracy up to 50 digits, DBL & SCI set=54  ****
  4. REM *****************************************************
  5. REM ************ Constants used by Functions ************
  6. Log10v# = LOG(10.) : e# = EXP(1.)
  7. Pid4# = ATN(1.) : Pid2# = Pid4# << 1 : Pi# = Pid2# << 1
  8. REM ********** Sub-function used by functions ***********
  9. DEF FN Sqrxx#(x#) = SQR(x#*x#-1.)
  10. REM ******************* Other TRIG Functions ************
  11. DEF FN Sec#(x#)   = 1. \ COS(x#)
  12. DEF FN Csc#(x#)   = 1. \ SIN(x#)
  13. DEF FN Cot#(x#)   = 1. \ TAN(x#)
  14. REM ************** Inverse TRIG Functions ***************
  15. DEF FN ArcSin#(x#) = ATN( x# \ SQR( 1. - x# * x# ) )
  16. DEF FN ArcCos#(x#) = Pid2# - FN ArcSin#(x#)
  17. DEF FN ArcCsc#(x#) = ATN(1\FN Sqrxx#(x#))+(x#<0) * Pi#
  18. DEF FN ArcSec#(x#) = ATN(FN Sqrxx#(x#))+(SGN(x#)-1.)*Pid2
  19. DEF FN ArcCot#(x#) = Pid2# - ATN(x#)
  20. REM ************* Hyperbolic TRIG Functions *************
  21. DEF FN SinH#(x#) = (EXP(x#)-EXP(-x#)) >> 1.
  22. DEF FN CosH#(x#) = (EXP(x#)+EXP(-x#)) >> 1.
  23. DEF FN TanH#(x#) = 1.-2.*EXP(-x#)/(EXP(x#)+EXP(-x#))
  24. DEF FN SecH#(x#) = 2./(EXP(x#)+EXP(-x#))
  25. DEF FN CscH#(x#) = 2./(EXP(x#)-EXP(-x#))
  26. DEF FN CtnH#(x#) = (EXP(x#)+EXP(-x#))\(EXP(x#)-EXP(-x#))
  27. REM ********* Inverse Hyperbolic TRIG Functions *********
  28. DEF FN AsinH#(x#)= LOG(x#+SQR(x#*x#+1.))
  29. DEF FN AcosH#(x#)= LOG(x#+SQR(x#*x#-1.))
  30. DEF FN AtanH#(x#)= LOG((1.+x#)\(1.-x#)) >> 1.
  31. DEF FN AsecH#(x#)= LOG((SQR(1.-x#*x#)+1.)\x#)
  32. DEF FN AcscH#(x#)= LOG((SGN(x#)*SQR(x#*x#+1.)+1.)\x#)
  33. DEF FN AcotH#(x#)= LOG((x#+1.)\(x#-1.)) >> 1.
  34. REM **** Angle Conversions for RADIANS,DEGREES,BRADs ****
  35. DEF FN DegRad#(x#) =x#*Pid4#\90.
  36. DEF FN RadDeg#(x#) =x#*90\Pid4#
  37. DEF FN DegBrad#(x#)=x#*Pid4#\64.
  38. DEF FN BradDeg#(x#)=x#*64.\Pid4#
  39. DEF FN BradRad#(x#)=x#*1.40625 : REM * 1.40625 = 90/64 *
  40. DEF FN RadBrad#(x#)=x#*64.\90.
  41. REM ***************** LOG base 10 ***********************
  42. DEF FN Log10#(x#)= LOG(x#)/Log10v#
  43. REM ************Test Routine For Accuracy ***************
  44. DEFDBL A-Z
  45. FOR I=.01 TO .76 STEP .25
  46. TRON X : PRINT"Should be:";I#
  47. PRINT FN ArcSin#(SIN(FN ArcCos#(COS(ATN(TAN(I#))))))
  48. PRINT FN ArcCot#(FN Cot#(FN AcotH#(FN CtnH#(I#))))
  49. PRINT FN AsecH#(FN SecH#(FN AcscH#(FN CscH#(I#))))
  50. PRINT FN AtanH#(FN TanH#(FN ArcCot#(FN Cot#(I#))))
  51. PRINT FN AcosH#(FN CosH#(FN ArcSec#(FN Sec#(I#))))
  52. PRINT FN AsinH#(FN SinH#(FN ArcCsc#(FN Csc#(I#))))
  53. PRINT FN DegRad(FN RadDeg(FN DegBrad(FN BradDeg(I#))))
  54. PRINT FN RadBrad(FN BradRad(10^FN Log10(I#)))
  55. NEXT
  56.